package br.com.velp.sudecap.dao;

import br.com.velp.sudecap.entidade.DireitoSistema;
import br.com.velp.sudecap.entidade.GrupoUsuario;
import br.com.velp.sudecap.entidade.Usuario;
import java.util.List;

/**
 * <sumario>
 * <objetivo> "Rastreabilidade" </objetivo>
 * <autor> EDUARDO SANTOS DE OLIVEIRA </autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 07.11.2012 </data_criacao>
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <requisitos_afetados> RF010.05 - Vincular Usuário ao Grupo </requisitos_afetados>
 * <descricao> Interface Responsável Pelas Operações de CRUD Referentes a Vinculação de Grupos / Usuários </descricao>
 * </sumario>
 */
public interface GrupoUsuarioDAO extends GenericCrudDAO<GrupoUsuario> {
    
    public List<GrupoUsuario> obterTodosGruposUsuario();
    
    public List<GrupoUsuario> obterTodosGruposSemInitialize();
    
    public List<DireitoSistema> recuperarDireitosVinculadosAoGrupo(GrupoUsuario grupo, String sistema);
    
    public List<DireitoSistema> recuperarDireitosNotIn(List<DireitoSistema> direitos, String sistema);
    
    public void salvarAtualizarDireitosGrupo(GrupoUsuario grupo, List<DireitoSistema> direitos);
    
    public boolean isGrupoJaCadastrado(Long codigo, String sistema);
    
    public boolean isGrupoJaCadastrado(String nome, String sistema);    
    
    public List<Usuario> obterUsuariosPorNomeGrupo(String nomeGrupo);
    
    public List<GrupoUsuario> recuperarGruposUsuarioPorSistema(String sistema);
    
}
